Day11-ACL访问控制列表

背景

随着网络规模的不断扩大,网络安全和网络质量问题日益突出,企业重要服务器资源被随意访问

如和解决这个问题?ACL 横空出世

ACL 是什么?

ACL(Access Control List ),访问控制列表
主要用于在众多类型的数据包中,“匹配/抓取”感兴趣的数据
是一个包含了多个“规则”的列表,不同规则通过“规则号”进行区分
每个“规则”都包含:动作 + 条件 两部分内容
动作分为:允许(permit) 和 拒绝(deny)
条件分为:地址(address) 和 通配符(wildcard bits)

ACL 详解

对网络中的数据报文 进行识别,实现对报文的精准控制。

ACL 的组成

ACL编号:用于标识 ACL

规则:描述报文匹配条件的判断语句

动作:包括 permit/deny ,表示允许还是拒绝

通配符

使用源/目的IP地址定义为规则的匹配项时,需要在IP地址后面指定通配符掩码,确定一个地址范围

IP地址通配符掩码与IP地址的反掩码类似,也是一个32比特位的数字字符串

IP地址通配符掩码的作用是,定义IP地址中的哪些位将被检查

IP地址通配符掩码也是有0和1组成的,“0”表示“检查相应的位”,“1”表示“不检查相应的位,总结:“检查0,忽略1”!

我找女朋友要求:

女 漂亮 有钱 只宠我 0.0.0.0 (4个字段全部满足)

女 漂亮 有钱 只宠我 0.0.0.255 (3个字段全部满足)

女 漂亮 有钱 只宠我 0.0.255.255 (2个字段全部满足)

女 漂亮 有钱 只宠我 255.0.255.0 (2个字段全部满足)

注意:通配符≠反掩码

ACL 的匹配原则

根据 ACL 的规则编号,从小到大依次匹配

匹配即停止(匹配上一条规则后,就按照动作去执行,不在向下查找剩余的规则

如果数据报文没有匹配到第一条,则继续向下查找第二条规则

如果所有规则都无法匹配,则执行隐藏规则

ACL隐藏规则

使用 traffic-filter调用,隐藏规则为允许所有。

使用别的方式调用(如 acl 3000 inbound),隐藏规则为拒绝所有。

ACL的分类

ACL 可以分为基本 ACL 和高级 ACL 两大类

基本 ACL(匹配范围太广)

ACL 编号:2000-2999.

匹配条件: 只能根据源IP 地址进行流量匹配。一般配置在离目标设近的设备上。

高级 ACL(匹配数据包更精准)

ACL 编号:3000-3999

匹配条件: 五元组(源IP 地址、目的 IP 地址、源端口号、目的端口号、协议号)。一般配置在离数据源近的设备上。

ACL 步长

步长,是指系统自动为ACL规则分配编号时,每个相邻规则编号之间的差。设置合理的步长,可以方便后续在旧规则之间插入新的规则。如果希望源IP地址为10.1.1.3的报文也被拒绝通过,可以直接在 rule15 之前加入一条新的规则,这样不会影响到旧规则的编号。华为设备中 ACL 的步长,默认是 5

rule 5 deny source 10.1.1.1 0  //表示拒绝源IP地址为10.1.1.1的报文通过                   
rule 10 deny source 10.1.1.2 0 //表示拒绝源IP地址为10.1.1.2的报文通过        
 rule 13 deny source 10.1.1.3 0              
rule 15 permit source 10.1.1.0 0.0.0.255 //表示允许源IP地址为10.1.1.0/24网段地址的报文通过

ACL 的调用位置

在设备上调用ACL,需要注意是在 inbound(入站)还是 outbound(出站)方向调用。

一般来讲,数据进入交换机的接口称之为inbound,由交换机发出的接口,为出方向。

其他

ACL 无法匹配设备本身产生的流量

在一台设备上可以存在多个 ACL,但是在同一个接口的同一个方向,仅能调用一个 ACL

实验 (1)基本 ACL

AR1:
ACL 2000. //创建acl 2000
rule 10 deny source 192.168.2.1 0.0.0.0. //设置规则,规则编号为 10,动作是拒绝,匹配流量是源地址 2.1
interface g0/0/0. //进入接口
traffic-filter outbound acl 2000. //在该接口上使用 traffic-filter ,在出方向调用这个acl

实验(2)高级 ACL实验

R7 配置
rule 10 permit  tcp  source 192.168.1.1 0 destination 192.168.3.1 0 destination-port eq www
rule 20 permit ip source 192.168.1.1 0 destination 192.168.2.0 0.0.0.255  
rule 30 deny ip source 192.168.1.1 0 destination any
....隐藏规则,允许所有

为什么 3 条 规则,有的是 permit TCP,有的是 permit IP ?

使用 TCP 、IP 与否,取决于想匹配的流量类型和控制精度

permit tcp用于允许 TCP 协议的特定流量,可以指定地址、端口和协议类型(因为端口号在传输层才被定义),我们第一条 需求是 允许访问对方的http协议(80)端口,所以使用 tcp

permit ip 命令用于允许所有基于 IP 协议的流量,通常指定源IP和目的 IP不限定端口或使用的具体协议。

如果需要控制特定类型的协议类型,指定端口,一般使用tcp/udp

如果不关心是哪种协议,只基于源IP 和目的 IP 进行控制,那么使用 IP 协议更合适

实验(3) ACL 的 Telnet 实验

R8 的 ACL 配置
acl 2000
  rule 5 permit source 192.168.1.254 0  //仅抓取 1.254 的的数据报文,动作为通过
  quit
user-interface vty 0 4. //进入虚拟终端控制台
acl 2000 inbound. //在 vty 调用 acl 2000(在 VTY 调用,不会影响别的流量)
R9 的 ACL 配置
acl 2000
  rule 10 deny source 192.168.1.254 0
  rule 20 deny source 192.168.12.1 0
  rule 30 permit source any
  quit
user-interface vty 0 4. //进入虚拟终端控制台
acl 2000 inbound. //在 vty 调用 acl 2000